package com.exam.dao.base;

import java.util.List;

import com.exam.util.Page;

/**
 * 2012-12-03 数据服务基础接口
 * 
 * @author MuLing
 * 
 * @param <T>
 */
public interface BaseDao<T> {
	/**
	 * 添加到数据库
	 * 
	 * @param obj
	 *            业务对象
	 * @return 添加成功返回true，否则false
	 */
	public boolean add(T obj) throws Exception;// 添加

	/**
	 * /** 根据id删除
	 * 
	 * @param id
	 *            主键
	 * @return 删除成功返回true，否则false
	 * 
	 * @throws Exception
	 *             向外抛出异常
	 */
	public boolean delete(Integer id) throws Exception;

	/**
	 * 批量删除
	 * 
	 * @param idList
	 *            需要删除的ID集
	 * @return 删除成功返回true，否则返回false
	 */
	public boolean delete(List<Integer> idList) throws Exception;// 批量删除

	/**
	 * 根据条件删除
	 * 
	 * @param strWhere
	 *            删除条件
	 * @return 删除成功返回true，否则false
	 */
	public boolean delete(String strWhere) throws Exception;// 根据条件删除

	/**
	 * 更新
	 * 
	 * @param obj
	 *            需要更新的业务对象
	 * @return 更新成功返回true，否则false
	 */
	public boolean update(T obj) throws Exception;// 更新

	/**
	 * 同时更新多个业务
	 * 
	 * @param objList
	 *            业务对象集合
	 * @return 更新成功返回true，否则false
	 */
	public boolean update(List<T> objList) throws Exception;// 更新

	/**
	 * 根据ID查找Model对象
	 * 
	 * @param id
	 *            主键ID
	 * @return 返回业务对象
	 */
	public T findModel(Integer id) throws Exception;// 根据id查找对象

	/**
	 * 根据条件查找对象列表
	 * 
	 * @param strWhere
	 *            条件
	 * @return 返回查找的结果列表
	 */
	public List<T> findList(String strWhere) throws Exception;// 根据条件查找列表信息

	/**
	 * 使用分页进行查找
	 * 
	 * @param page
	 *            分页对象
	 * @return 返回分页查找的结果列表
	 */
	public List<T> findListByPage(Page page) throws Exception; // 进行分页查询

	/**
	 * 按条件进行分页查找
	 * 
	 * @param strWhere
	 *            条件
	 * @param page
	 *            分页对象
	 * @return
	 */
	public List<T> findListByPage(String strWhere, Page page) throws Exception; // 进行分页查询

	/**
	 * 查看总的记录数
	 * 
	 * @param strWhere
	 *            查询记录的条件
	 * @return 返回满足条件的记录数
	 */
	public int findCount(String strWhere) throws Exception;// 查看数量
}
